While graphic processing units (GPUs) have become an extremely powerful tool as compared with their predecessor versions of a couple of years ago or with the latest central processing units (CPUs), they typically still have a fixed number of pipelines and limited on-board memory. There has been a trend for the volumetric datasets required for visualization to get bigger and bigger. Indeed, some present day datasets are so big that even the latest GPUs have difficulty in handling them.
While more powerful GPUs may become available at some future time, an immediate approach is to exploit multiple GPUs within the same system, so that the workloads are distributed to different GPUs and each GPU renders in parallel. GPU manufacturers have provided multi-GPU capabilities, such as Nvidia's SLI and ATI's CrossFire. These technologies provide a transparent layer that automatically assigns workloads to GPUs, and which does not require any involvement of the application running on top of it. These approaches are very generic in that they do not require any assumption of the specialties of the applications. However, this puts several limitations on applications. Whenever one of these limitations is violated, the performance is severely impacted. In the worst case, the rendering falls back to the speed of single GPU rendering.